Integration Test
『単体テストの考え方/使い方』.iconでのIntegration Testの定義
つまり、以下の3つの内、一つでも満たさないものがあればIntegration Testである
1単位の振る舞いを検証する
実行時間が短い
他のtest caseから隔離されている
参考
ドメインモデルとプロセス外依存を結びつけるコードを検証する
つまりController的なもの
ドメインモデル自体のテストは単体テストでやる
どういうものをテストするか
中でも、全てのプロセス外依存とやり取りするような長いpathを選ぶ
にしても曖昧では?
ログインが完了する、までで良いのか
ログインして投稿してログアウトするまで、が良いのか
さすがに前者mrsekut.icon
一つのテストケースでは、一つのAAA
単体テストでは扱えなかった全ての異常ケース
実装の詳細との関わりが小さいのでリファクタの耐性がある
そもそもコストが高いので、明確な価値をもたらすコードのみをテストする
本番環境で全てのバグが出ないようにすることが目的ではない
データが壊れないバグならテストしなくても良い、ぐらいに割り切る
1個1このサイズ
あらゆるテスト対象を1個のsuitの中に含めちゃって良いのか
ちゃんと分割したほうが良いのか
普通に考えるとこっちのほうが良さそうだが
具体例
そのpathに登場するプロセス外依存を分析する
managedなのかunmanagedなのかを見極める
実行する
データをDBに保存しておく
テストを実行する
DBを見て正しいデータが入ってるか確認する
mockの有無は定義に関係ない
DOMの存在を前提としているもの
例えばinput要素を用意して値を入力するやつとか
hooks単体でテストするもの
next.js
next.js
https://youtu.be/5H3Sswp5qYg?t=1153
単体テストで確認した部品を他システム間とのインターフェースをテストする
他システムとは、OS,ファイルシステム、ハードウェア、などなど
複数のunit testを互いに統合したもの
mockはできるだけ使わない
MSWを使ったmockありのページ全体のテストとか
具体例
あたりを使っている
参考になりそうなプロジェクト
かなり豊富にtest書いてる